[アップデート] Amazon EventBridge Schedulerは、最後のタスク呼び出し完了時に、スケジュールを自動的に削除できるようになりました
はじめに
Amazon EventBridge Schedulerは、最後のタスク呼び出しの完了時に自動的にスケジュールを削除する設定ができるようになりました。
EventBridge Scheduler は、タイムゾーンを指定して 定期的または1回限りのタスクを実行することができるサービスです。
サービス詳細は、以下をご参照ください。
今回のアップデートで嬉しいポイントは、EventBridge Schedulerでスケジュールを設定した場合、従来は、自分でスケジュール設定を削除する必要がありましたが、自動で削除できるようになった点です。
これにより、運用が楽になります。
ただし、後述しますが、定期的なスケジュールの場合でも自動で削除できますが、設定には注意が必要です。
試してみた
本ブログでは、EC2を起動するスケジュール設定で試してみます。
IAMロールの作成
事前に、EventBridge Schedulerが利用するIAMロールを作成しておきます。
カスタム信頼ポリシー
で下記を設定し、AmazonEC2FullAccess
をアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
スケジュールを作成(1回限りのスケジュール)
EventBridge Schedulerでスケジュールを作成します。
スケジュールのパターンは、1回限りのスケジュール
を選択します。
ターゲットAPIは、StartInstances
で、起動させるインスタンスIDを入力します。
今回のアップデート内容であるスケジュール完了後のアクション
が増えております。
DELETE
を選択することで、、タスク実行後に自動でスケジュールが削除されます。
アクセス許可の項目は、先程作成したIAMロールを選択します
これでスケジュールが作成されました。
詳細では、完了後のアクションDELETE
が表示されています。
設定した時間になりますと、EC2が起動し、スケジュールは削除されていることが確認できました。
定期的なスケジュールの場合
定期的なスケジュールでも、以下の4パターンで試してみます。
- rateベース(終了日時指定なし)
- rateベース(終了日時指定あり)
- cronベース(終了日時指定あり、最後の呼び出しが存在しない)
- cronベース(終了日時指定あり、最後の呼び出しが存在する)
ポイントとしては、終了日を指定しているか?、最後の呼び出しが存在しているか?、です
スケジュール以外の設定は、先程のEC2を起動する設定と同じです。
rateベース(終了日時指定なし)
スケジュール名EC2Start-2
で、rateベースのスケジュールで、3分ごとにEC2を起動させる設定をしました。
結果は、スケジュールは削除されず、定期的に実行されておりました。
理由としては、最後のタスク呼び出しが存在せず、終わりがなく3分ごとに実行され続けるためです。
rateベース(終了日時指定あり)
スケジュール名EC2Start-2
で、rateベースのスケジュールで、3分ごとにEC2を起動させ、終了日時(当日の08:25)を追加してみました。
終了日時を設けることで、終了時間(当日の08:25)になると、スケジュールは削除されました。
理由としては、終了日時を指定することで、終了日時が最後のタスク呼び出しとなるためです。
cronベース(終了日時指定あり、最後の呼び出しが存在しない)
スケジュール名EC2Start-3
で、cron式* 8 3 8 ? 2023
で毎分EC2を起動し、終了日(当日の08:35)を設けてみました。
毎分タスクが実行されますが、終了日時を設けています。
先程の結果と同様に、終了日時を設けることで、終了時間(当日の08:35)になると、スケジュールは削除されました。
cronベース(終了日時指定あり、最後の呼び出しが存在する)
スケジュール名EC2Start-4
で、cron式55,56 8 3 8 ? 2023
で8:55
と8:56
にEC2を起動させ、終了日(当日の09:00)を設けてみました。
この場合は、終了日時の09:00になる前、最後のタスク呼び出し時間である8:56
にスケジュールは削除されました。
理由としては、最後のタスク呼び出しが8:56
だったためです。
結果
スケジュール完了後のアクション
でDELETE
を選択すると、1回限りのタスクの場合、タスク実行後にスケジュールは削除されます。
定期的なスケジュールで自動削除したい場合、以下がポイントです。
- 最後のタスクが呼び出されるスケジュールの場合、終了日時の有無に関わらず、呼び出された時点でスケジュールは自動削除されます
- 終了日時を設けることで、設定した終了日時が最後のタスク呼び出しとなり、スケジュールは自動削除されます
- 終了日時を設けない、最後のタスクが呼び出されないスケジュールの場合、削除はされません
最後に
今回のアップデートによって、設定したスケジュールが最後のタスク実行後に自動削除することが可能になりました。
ぜひ利用してみて下さい。